
public class MyQueue {
    //既然它的的底层是链表，那我们就要创建节点
    class ListNode{
       public int val;
       public ListNode next;

        public ListNode(int val) {
            this.val = val;
        }
    }
    public  ListNode head;//未初始化就是null;
    public  ListNode tail;//尾巴节点
    public int usedSize;//记录有效元素的个数
    public  void  offer(int val){
        ListNode node=new ListNode(val);
        if(head==null){//头节点为空的时候，说明此时是空队
            head=node;
            tail=node;
        }else{
            tail.next=node;
            tail=tail.next;
        }
        usedSize++;//有效元素个数加加
    }
    //出队列
    public int pop(){
        //要先判断队是否为空
        if (isEmpty()){
            throw new QueueEmptyExption("队空,无法删除");
        }//不为空，进行删除

        if(head==null){//把尾指针置null
            tail=null;
        }
        int tmp=head.val;
        head=head.next;
        usedSize--;
        return  tmp;

    }
    public boolean isEmpty(){
        return usedSize==0;
    }
    public  void display(){
        ListNode cur=head;
        while(cur!=null){
            System.out.print(cur.val+" ");
            cur=cur.next;
        }
        System.out.println();
    }

}
